g_idle_add_full (G_PRIORITY_DEFAULT, (GSourceFunc)process_input_idle_cb, server, NULL);
}
-static void
+static gboolean
broadway_server_read_all_input_nonblocking (BroadwayInput *input)
{
GInputStream *in;
GError *error = NULL;
if (input == NULL)
- return;
+ return FALSE;
in = g_io_stream_get_input_stream (input->connection);
g_error_matches (error, G_IO_ERROR, G_IO_ERROR_WOULD_BLOCK))
{
g_error_free (error);
- return;
+ return TRUE;
}
if (input->server->input == input)
g_printerr ("input error %s\n", error->message);
g_error_free (error);
}
- return;
+ return FALSE;
}
g_byte_array_append (input->buffer, buffer, res);
parse_input (input);
+ return TRUE;
}
static void
{
BroadwayServer *server = input->server;
- broadway_server_read_all_input_nonblocking (input);
+ if (!broadway_server_read_all_input_nonblocking (input))
+ return FALSE;
if (input->active)
process_input_messages (server);